package com.indicator.client.bean;

import java.math.BigDecimal;

public class CalculatorBase {

    public BigDecimal calculate(BigDecimal val1, BigDecimal val2, String type) {
        if (type.equals("1")) {
            return add(val1, val2);
        }
        if (type.equals("2")) {
            return sub(val1, val2);
        }
        if(type.equals("3")){
            return mul(val1,val2);
        }
        if(type.equals("4")){
            return divide(val1,val2);
        }
        return null;
    }

    private BigDecimal add(BigDecimal val1, BigDecimal val2) {
        if (val1 == null && val2 == null) {
            return null;
        }
        if (val1 == null) {
            return val2;
        }
        if (val2 == null) {
            return val1;
        }
        return val1.add(val2);
    }

    private BigDecimal sub(BigDecimal val1, BigDecimal val2) {
        if (val1 == null && val2 == null) {
            return null;
        }
        if (val1 == null) {
            return val2;
        }
        if (val2 == null) {
            return val1;
        }
        return val1.subtract(val2);
    }

    private BigDecimal mul(BigDecimal val1, BigDecimal val2) {

        if (val1 == null) {
            return null;
        }
        if (val2 == null) {
            return null;
        }
        return val1.multiply(val2);
    }

    private BigDecimal divide(BigDecimal val1, BigDecimal val2) {
        if (val1 == null) {
            return null;
        }
        if (val2 == null) {
            return null;
        }
        return val1.divide(val2, 24, BigDecimal.ROUND_HALF_UP);
    }
}
